
using System;
using System.Collections.Generic;
using HumanElement.Xna.Construct;
using Microsoft.Xna.Framework;

namespace HumanElement.Xna
{
    /// <summary>
    /// 
    /// </summary>
    public interface IGameHost : IEntityManager
    {
        /// <summary>
        /// Gets the game instance.
        /// </summary>
        /// <param name="type">The type.</param>
        /// <returns></returns>
        Game GetGameInstance(Type type);
        
        /// <summary>
        /// Gets a value indicating whether [game paused].
        /// </summary>
        /// <value><c>true</c> if [game paused]; otherwise, <c>false</c>.</value>
        bool GamePaused { get; }

        /// <summary>
        /// Gets the players.
        /// </summary>
        /// <value>The players.</value>
        int Players { get; }
        
        /// <summary>
        /// Gets the services.
        /// </summary>
        /// <value>The services.</value>
        Dictionary<Type, IEntityManager> Services {get;}
    }

    /// <summary>
    /// public interface IGameHost
    /// </summary>
    public interface IGameHost<TGame> : IGameHost     
        where TGame:Game, new()
    {
        /// <summary>
        /// Gets the game.
        /// </summary>
        /// <value>The game.</value>
        TGame Game
        {
            get;
        }         
    }
}